<!DOCTYPE html>
<html>
    <head>
        <!-- 当前文档的字符集编码为utf-8 -->
        <meta charset="utf-8">
        <meta name = "author" content="wyrQF">
        <meta name="keywords" content="CGI开发 H5模版 千锋教育 西安物联网">
        <title>引用js的三种方式</title>
        <link rel="stylesheet" href="/css/my.css">
    </head>
    <body>
        <script>
            /* 多行注释
                js的基本语法：变量的定义  算术运算  
                    关系运算  逻辑运算 分支 循环 数组
            */
           // 1. 变量的定义 
        //    let name = "wyr"; // let 是ES6中定义的 ，目的是优化var定义变量 用于增强局部变量的作用域
        //    console.log(name);
        //    console.log(typeof(name)); // 查看变量类型  字符串类型 string

        //    let x = 5.0; // number 数值型 （整形、小数型）
        //    let y = "4"; // string

        //     console.log(x,typeof(x));
        //     // + 一个字符串变量和任意变量的内容都是字符串的拼接
        //     let z = x + y; // 54  默认情况将小数点及0去掉，先转换为整数再和字符串拼接
        //     let n = y + x; // 45
        //     console.log(z , n);

        //     let m = x * y; // 数字字符串和数值进行* / 运算时，会自动字符串转换为数值在计算
        //     console.log(m,typeof(m));
            
        //     let n1 = "123";
        //     let n2 = "4.5";
        //     // 将数值字符串转化为数值的方式： number() parseInt() parseFloat()
        //     let n1_ = Number(n1);
        //     console.log(n1_,typeof(n1_));

        //     let n2_ = parseInt(n2);
        //     console.log(n2_,typeof(n2_));

        //     let n3_ = parseFloat(n2);
        //     console.log(n3_,typeof(n3_));

        //     let x2 = "123abc";
        //     let x2_ = parseFloat(x2);
        //     console.log(x2_,typeof(x2_));
        //     // Number:NaN praseInt:123 praseFalot:123
        //     // NaN 表示 Not a Number 不是一个数字
        //     let x3 = "1.5abc";
        //     let x3_ = Number(x3);
        //     console.log(x3_,typeof(x3_));
        //     // Number:NaN praseInt:1 praseFalot:1.5
            
        //     let x4 = "abc123";
        //     let x4_ = Number(x4);
        //     console.log(x4_,typeof(x4_));
        //     // Number:NaN praseInt:NaN praseFalot:NaN

        //     let x5 = null; //声明并初始化为null
        //     let x6; // 声明，未定义 undefined

        //     if( x5 == null || x6 == undefined){
        //         alert("x5 为空 或者 x6 未定义")
        //     }

        //     let total = 0;
        //     for(let i = 0; i < 100; i++){
        //         total += 1;
        //     }
        //     console.log(total);

            // 定义数组
            let names = ["A","B","C"];
            names.push("D");

            // 删除某一个元素, 将数组中2的下标开始删除一个元素
            names.splice(2,1);
            // 数组在js中一个对象，对象即有属性，访问方式同c的结构体变量成员相同
            for (let i = 0; i < names.length; i++) {
               console.log(names[i]);
                
            }

            // 查找A是否在数组中
            // indexOf() 获取数组元素的下标，存在返回下标 不存在返回-1
            console.log(names.indexOf("C"));

            // const 修饰的是常量
            for(const idx in names){
                console.log(idx,names[idx]);
            }

            // 使用数组对象本身的函数
            // function(){} 匿名函数 一般用于函数回调
            // js中函数回调，回调可以传更多的参数，但是接受是可以只接受左边开始的前几个
            names.forEach(function(item,idx,arr){
                console.log(item,idx,arr);
            })

            let c = 0;
            while (true) {
                c++;
                console.log(c);
                if(c == 10) break;
            }
        </script>
    </body>
</html>
